package edu.cuit.avatar;

/**
 * 圆
 * 每个对象都有自己独特的标识、状态和行为
 * 一个对象的状态（state，也称未特征（property）或属性（attribute））是由具有当前值的数据域来表示的
 * 一个对象的行为（behavior，也称为动作（action））是由方法定义的
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/4 10:00
 */
public class Circle {
    public static final float PI = 3.14f;
    /**
     * 半径
     */
    private float radius;


    public Circle(){
        System.out.println("无参构造方法,初始化半径:" + this.radius);
    }
    /**
     * 构造方法
     * 使用new关键字创建对象时调用
     * 作用:完成对象的初始化
     */
    public Circle(float radius){
        this.radius = radius;
        System.out.println("创建圆对象实例,半径为:" + this.radius);
    }

    public float getRadius() {
        return radius;
    }

    public void setRadius(float radius) {
        if(radius < 0)
            throw new IllegalArgumentException("非法的半径:" + radius);
        this.radius = radius;
    }

    /**
     * 计算面积
     * @return 面积
     */
    public float getArea(){
        return PI * radius * radius;
    }

    /**
     * 计算周长
     * @return 周长
     */
    public float getPerimeter(){
        return 2 * PI * radius;
    }

    public boolean equalsArea(Circle circle){
        return this.getArea() == circle.getArea();
    }
}
